package com.itheima.d2_lambda;

import com.itheima.d1_arrays.Student;

import java.util.Arrays;
import java.util.Comparator;

/*
    1 对之前的代码使用lambda表达式优化

    2 Lambda表达式的省略写法(进一步简化Lambda表达式的写法)
        1) 参数类型可以省略不写。
        2) 如果只有一个参数，参数类型可以省略，同时()也可以省略。
        3) 如果Lambda表达式中的方法体代码只有一行代码，可以省略大括号不写，同时要省略分号！
           此时，如果这行代码是return语句，也必须去掉return不写。

 */
public class LambdaTest2 {
    public static void main(String[] args) {
        // 目标：掌握如何对数组中的对象进行排序。
        Student[] students = new Student[4];
        students[0] = new Student("蜘蛛精", 169.5, 23);
        students[1] = new Student("紫霞", 162.8, 26);
        students[2] = new Student("紫霞", 163.8, 26);
        students[3] = new Student("至尊宝", 167.5, 24);

        // 1、public static void sort(类型[] arr)：对数组进行排序。
        // 2、public static <T> void sort(T[] arr, Comparator<? super T> c)
        //  Arrays.sort(students);
        //System.out.println(Arrays.toString(students));

        //比较器
       /*
        Arrays.sort(students, (str1,str2)-> {
                return str1.getAge() - str2.getAge();
                if (str1.getAge()-str2.getAge()==0){
                    return (int) ((int) str1.getHeight()-str2.getHeight());
                }
        });
        */
        Arrays.sort(students, (str1,str2)-> {
/*
                if (str1.getAge()-str2.getAge()==0){
                    return (int) ((int) str1.getHeight()-str2.getHeight());
                }*/
            return str1.getAge() - str2.getAge();
        });

        System.out.println(Arrays.toString(students).toString());
    }
}
